All posts

Engineering Aug 27, 2026 4 min read

Why Ascent only asks for a read-only key

One role, chosen by you, and a setup screen that turns away keys that can do too much. What happens to the key after you paste it, what we store, and how leaving works.

Quinn Alvarez Co-founder, engineering

A small brass key lying on folds of pale pink and lilac silk

The first thing Ascent asks a new customer for is an App Store Connect API key. It is the most sensitive thing we will ever ask for, and we get the same question about it every week: what can you do with it?

The short answer is: read your sales reports, and nothing else unless you say so. The longer answer is worth writing down, because we made a few decisions early that we would like to be held to.

One role, chosen by you

App Store Connect keys carry roles, the same ones a person on your team would have. Ascent asks for a key with Sales and Reports. That role can download sales, subscription and financial reports. It cannot edit an app, change a price, submit a build, see your banking details or invite anyone to your team.

If you want to answer reviews from Ascent, the key also needs Customer Support, which can read and reply to reviews. That is optional, and you can add it months later by issuing a new key. We never ask for Admin, App Manager, Developer or Finance, and if you paste a key that has one of them, setup stops and asks you to make a narrower one.

That last part cost us sign-ups. About 6% of people who start connecting paste an Admin key, because it is the one they already have. Turning them away at the door is the right trade. A key we refuse to hold is a key we cannot leak.

What happens to the key

You paste the key once. It is encrypted before it is written anywhere, with a key that lives in a separate service from the database, and it is never displayed again, to you or to us. There is no screen in our admin tools that shows it. When a support engineer looks at your account they see the key’s ID, its roles and when it was last used.

The importer decrypts it in memory for the few seconds each night it takes to request your reports. Then it lets go.

What we store, and for how long

  • Daily reports: downloads, proceeds and subscriptions, kept while your account is open so last year can be compared with this one.
  • Reviews and your replies: kept for the same period.
  • Keyword ranks: these are public data and are kept indefinitely.

We do not receive anything about your individual customers. Apple’s reports are totals, and that is all Ascent has ever seen.

Leaving

Disconnect an app and its key is deleted in the same request. Not marked for deletion: deleted. Stored reports follow 30 days later, which gives you a month to change your mind or export everything as CSV. If you would rather not wait, there is a button for that too.

You can also revoke the key from Apple’s side at any time without telling us. The next import will fail, Ascent will email you once to say so, and nothing else will happen.

Why we wrote this down

Two of the six of us shipped apps for years before Ascent, and we both handed keys to analytics tools without reading much. We would like to be the tool that deserved that. If any of the above stops being true, this post will be changed and dated, and the changelog will say so.

The same commitments, in fewer words, are on the security page. Questions about any of it go to security@ascent.example, and a person who can read the code will answer.